// const { koaBody } = require("koa-body");

const path = require('path')

const { fileuploadError, fileTypeError, publishGoodsError, updateGoodsError, invalidGoodsID } = require('../constant/error_type')

const { createGoods, UpdateGoods, removeGoods, restoreGoods, findGoods } = require('../service/goods_service');

class GoodController {
    //待完善 补充中间件防止其他文件上传
    async upload(ctx, next) {
        console.log(ctx.request.files.file);
        const { file } = ctx.request.files
        // console.log(file);
        const fileTypes = ['image/jpeg', 'image/png']
        if (file) {
            if (!fileTypes.includes(file.mimetype))
                return ctx.app.emit('error', fileTypeError, ctx)


            ctx.body = {
                code: "0",
                message: '商品图片上传成功',
                result: {
                    goods_img: `http://localhost:8000/${path.basename(file.filepath)}`
                }
            }
        }
        else {
            console.error('文件上传失败');
            return ctx.app.emit('error', fileuploadError, ctx)
        }

    }

    //上传商品
    async create(ctx) {
        //去service模块操作数据库

        try {
            const { updatedAt, createdAt, ...res } = await createGoods(ctx.request.body)
            // console.log(res);
            ctx.body = {
                code: 0,
                message: '发布商品成功',
                result: res
            }
        } catch (error) {
            console.error(error);
            return ctx.app.emit('error', publishGoodsError)
        }
    }
    //更新商品
    async update(ctx) {
        // console.log(ctx.params.id);

        //操作数据库更新数据
        // ctx.body = "修改商品成功"

        try {
            const res = await UpdateGoods(ctx.params.id, ctx.request.body)
            if (res) {
                return ctx.body = {
                    code: 0,
                    message: '商品更新成功',
                    result: ''
                }
            }
            else {
                return ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (error) {
            // console.log(error);
            return ctx.app.emit('error', updateGoodsError, ctx)
        }

    }
    //删除商品
    async remove(ctx) {
        const res = await removeGoods(ctx.params.id)
        // console.log(res);

        if (res) {
            return ctx.body = {
                code: 0,
                message: '删除商品成功',
                result: ''
            }
        }

    }
    //上下架商品
    async Goodsdown(ctx) {
        const res = await removeGoods(ctx.params.id)
        // console.log(res);

        if (res) {
            return ctx.body = {
                code: 0,
                message: '下架商品成功',
                result: ''
            }
        }
        else {
            ctx.app.emit('error', invalidGoodsID, ctx)
        }
    }
    async Goodsup(ctx) {

        try {
            const res = await restoreGoods(ctx.params.id)
            if (res) {
                return ctx.body = {
                    code: 0,
                    message: '上架商品成功',
                    result: ''
                }
            }
            else {
                ctx.app.emit('error', invalidGoodsID, ctx)
            }

        } catch (error) {
            console.error('上架商品出错');

        }

    }

    //查找商品
    async findAll(ctx) {
        //1.解析pageNum 和 pageSize
        const { pageNum = 1, pageSize = 10 } = ctx.request.params
        //2.调用数据数据处理库方法
        const res = await findGoods(pageNum, pageSize)
        //3.返回结果
        ctx.body = {
            code: '0',
            message: '商品获取成功',
            result: res,


        }
    }
}

module.exports = new GoodController()